package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import model.Endereco;
import model.Veiculo;

public class VeiculoDAO implements InterfaceDAO<Veiculo>{

	@Override
	public boolean inclusao(Veiculo t) {
		
		Connection conn;
		
		PreparedStatement pstm;
		
		String query = "INSERT INTO dbo.VEICULO (PLACA, RENAVAM, TIPO, STATUS_VEICULO, TARA, COMP_CAP_CARGA, LARG_CAP_CARGA, ALT_CAP_CARGA, PESO_MAX_CARGA, NUMERO_EIXOS, CAP_TANQUE_COMB, MARCA_MODELO, COMBUSTIVEL, ANO_FAB , VINCULO_FROTA )"+ 
				        "VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? , ? )";
		
		conn = Conexao.getConexao();
		
		try {
			
			pstm = conn.prepareStatement(query);
			
			pstm.setString(1,  t.getPlaca());
			pstm.setString(2,  t.getRenavan());
			pstm.setString(3,  t.getTipo());
			pstm.setInt   (4,  t.getStatusVeiculo());	
			pstm.setFloat (5,  t.getTara());
			pstm.setFloat (6,  t.getCompCapacidadeCarga());
			pstm.setFloat (7,  t.getLarguraCapacidadeCarga());
			pstm.setFloat (8,  t.getAlturaCapacidadeCarga());
			pstm.setFloat (9,  t.getPesoMaxCarga());
			pstm.setInt   (10,  t.getNumeroEixos());
			pstm.setInt   (11,  t.getCapacidadeTanqueComb());
			pstm.setString(12,  t.getMarcaModelo());
			pstm.setString(13,  t.getCombustivel());
			pstm.setInt   (14,  t.getAnoFabricacao());
			pstm.setInt   (15,  0);
				
			if(pstm.executeUpdate() > 0){
                pstm.close();
                return true;
            }else{
                pstm.close();
                System.err.println("Erro ao tentar incluir veiculo no banco ");
                return false;
            }
			
	}catch(Exception f){
		System.err.println("Erro ao tentar incluir veiculo no banco "+ f);
		return false;
	}
		
		
	
	}

	@Override
	public boolean alteracao() {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean exclusao() {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean busca() {
		
		return false;
	}
	
	public ArrayList<Veiculo> buscaVeiculos(){
		
		Connection conn = null;
		ResultSet rs;
		Statement stmt;
		ArrayList<Veiculo> veiculos = null; 
		
		try {
			conn = Conexao.getConexao();
			stmt = conn.createStatement();
			
			rs = stmt.executeQuery("SELECT TIPO, PLACA, MARCA_MODELO FROM VEICULO WHERE STATUS_VEICULO = '1' AND VINCULO_FROTA = '0'");
			
			veiculos = new ArrayList<Veiculo>();
			Veiculo veiculo;
			
			while ( rs.next() ) {
	             String placa       = rs.getString("PLACA");
	             String tipoVeiculo = rs.getString("TIPO");
	             String marcaModelo = rs.getString("MARCA_MODELO");
				 veiculo = new Veiculo(placa, "", tipoVeiculo, marcaModelo, "", 1);
				 veiculos.add(veiculo);
	        }
			
	        conn.close();
		   
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		 return veiculos; 
		
	}

}
